<?php
	@header("Content-type:text/html; charset=utf-8"); // @表示忽略此行可能出现的错误或警告; 编辑器的编码格式也必须设置为utf-8
	@$name = $_POST["name"];
	if(!empty($name)) {
	    // 当包含名字中文时，使用setrawcookie不编码，$name不加密读取兼容性更好，只是安全性降低(使用英文名字或索引均不会有兼容性问题)
	    //setrawcookie("selectedName", $name, time()+60*60*24*30); // 订餐后保存名字一个月(为关联页的select添加用户时无须在此同步名字，但却可能面临中文存取问题，就如parse_ini_file存取ini配置数据)
		// 如果采用上述php方法仍然不能使cookie的中文被js正确读取，则可采用下述方法存取索引(该方法为关联页的delect添加用户时需要同步两个源文件中的名字列表)
	    $everyone = array("及时雨宋江", "玉麒麟卢俊义", "智多星吴用", "浪子燕青", "九纹龙史进", "双鞭呼延灼", "大刀关胜", "霹雳火秦明", "豹子头林冲", "青面兽杨志", "小李广花荣", "黑旋风李逵", "行者武松", "花和尚鲁智深");
        $num = count($everyone);
		for($i=0; $i<$num; $i++) {
		    if($everyone[$i] == $name) {
				setcookie("selectedIndex", $i, time()+60*60*24*30); // 非中文不涉及编码问题(即setcookie同setrawcookie)，加密则要手动加密(在此无须加密)
			}
		}
	}
?>

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!编辑器的编码格式也必须设置为utf-8>
	<!<meta http-equiv="refresh" content="6" /> <!刷新页面的简捷方法，3表示秒数; 另外也可以使用js的setTimeout配合window.location.reload()实现，比较灵活，适用面广>>
</head>

<body>
<div align="center">

<?php // <?兼容性不如<?php, <?必须在php.ini中配置short_open_tag=on，否则会导致整个php页面乱码
    $filename = "../menuqwds/destmenu.ini";
	@$date = date("Y-m-d");
	@$name = $_POST["name"];
    @$bill = $_POST["bill"]; 
	@$menu = $_POST["menu"];
	touch($filename); // 确保配置文件存在(有则改变访问时间，无则创建)
	$filecontents = file_get_contents($filename); // 读取整个配置文件到字符串缓冲区
	// 如果配置文件新建或过期(不是今天创建或更新的)，那么使之包含且只包含时间戳Section
	if(!stristr($filecontents, $date)) {
		@$timestamp = "[timestamp]\r\n" . date("l") . " = " . $date . "\r\n"; // @为date("l")而设置
		file_put_contents($filename, $timestamp);
	}
		
	if(!empty($name)) {
		// 缓冲配置文件
		$filecontentsarray = file($filename); // 返回分行数组
		// 打开配置文件
		$file = fopen($filename, "w") or die("Unable to open file!"); // 有则清空无则创建（在此应为清空）
		// 回写缓冲数据，旨在删除上次订餐
		for($i=0; $i<count($filecontentsarray); $i++) { 
			if(!stristr($filecontentsarray[$i], $name)) { 
				fwrite($file, $filecontentsarray[$i]); 
			}
		}
		
		// 写入本次订餐
		if($bill > 0) {
			$sectionname = "[" . $name . "  " . ($bill+2) . "元]\r\n";
			fputs($file, $sectionname);
			for($i=0; $i<count($menu); $i++) {
				$keyandvalue = $name . $i . " = " . $menu[$i] . "\r\n";		
				fputs($file, $keyandvalue);
			}
		}
		
		// 经过上述两个步骤，本次订餐数据，上次订餐数据交叉处理共有4种情况。。。
		fclose($file);
	}

	// 显示今日全部订餐结果，注意，暂定ini配置文件的开始是时间戳Section
/* 	$arrays = parse_ini_file($filename, true); // true返回二维数组(false返回一维数组, 对于二维的ini配置格式，使用true比较高效实用)
	$tatolmenus = count($arrays); // 包括时间戳Section
	if($tatolmenus < 2) {  // 1 == $tatolmenus, 不计时间戳Section
	    echo "暂时还没有人定餐!";
	} else {
	    echo "<b>翠竹亭订餐电话：26625820</b><br /><br />";
	    echo "目前共有" . ($tatolmenus-1) . "人订餐：<br /><br />"; // 不计时间戳Section
		echo "<table border='1'><tr>";	
		foreach($arrays as $key1=>$value1) {
			if(0 == strcasecmp($key1, "timestamp")) {
				continue; // 等同于下行else，跳过时间戳Section
			}
			
			echo "<td valign='top'><table>";
			echo "<div align='center'>" . $key1 . "</div><hr />";
			foreach($value1 as $key2=>$value2) {
				echo "<tr><td>" . $value2 . "</td></tr>";
			}
			
			echo "</table></d>";
		}
		
		echo "<tr></table>";
	}
	
	echo "<br />注：总价包含米饭2元<br /><br />"; 
	echo "<a href='index.htm'><b>返回订餐</b></a>"; */
    // 配置文件仍是ini格式，只因兼容问题改为分行读取
	$arr = file($filename); // 分行数组
	$totallines = count($arr); // 行数
	$totalmenus = 0; // 订餐份数
	for($i=2; $i<$totallines; $i++) { // 订餐计数，跳过前两行的时间戳Section
		if(stristr($arr[$i], "[")) {
			$totalmenus++;
		}
	}	
	
	if($totalmenus < 1) { // (0 == $totalmenus)
	    // 上部布局
	    echo "<span style='color:#ff8844'><b>暂时还没有人定餐!</b></span><br />";
	}else { 
	    // 上部布局
		echo "<img width='256' height='48' src='res/t28.png' valign='top' /><br />";
		echo "<img width='256' height='48' src='res/t20.png' valign='top' /><br />";
		// 中部标题部分
	    echo "<br /><span style='color:#ff8844'><b>目前共有" . $totalmenus . "人订餐(本公司地址)：</b>(双击菜单刷新)</span><br />";
		// 中部主体表格, 为避免超出显示区域而变形(表格自动适应页面宽度)或者表格定宽超宽拖拉，暂定一行显示6份订餐，采用一个表格只显示一行的方式来实现居中对齐
		$totalmenus = 0;
		for($i=2; $i<$totallines; $i++) { // 订餐列表，跳过ini前两行的时间戳Section
			if(stristr($arr[$i], "[")) {
				$totalmenus++;
				if($totalmenus%6 == 1) {
					if($totalmenus > 6) {
						echo "</td>";
						echo "<td width='35' height='225' background='res/t38.png' />";
						echo "</tr></table>";
					}
					
					echo "<table border='0' cellspacing='0' cellpadding='0' onclick='javascript:window.location.reload()'><tr align='center'>";
					echo "<td width='35' height='225' background='res/t36.png' />";
				}else {
					echo "</td>";
				}
				
				$menutitle = strtr($arr[$i], "[]", "  ");
				trim($menutitle);
				echo "<td align='left' valign='top' width='154' height='225' background='res/t37.png'>";
				echo "<div align='center' style='color:yellow; margin-top:44px; line-height:28px'>" . $totalmenus . $menutitle . "</div>";
				continue; // 等同于下行else
			}
			
			$charindex = stripos($arr[$i], "=");
			$menuitem = substr($arr[$i], $charindex+1);
			trim($menuitem);
			echo "<span style='color:yellow; margin-left:18px; line-height:20px'>" . $menuitem . "</span><br />";
		}
		
		echo "</td>";
		echo "<td width='35' height='225' background='res/t38.png' />";
		echo "</tr></table>";
		// 中部尾注部分
		echo "<br /><span style='color:#ff8844'>注：订餐金额默认包含米饭2元</span><br />";
	}
	// 下部布局
	echo "<br /><a href='srcmenu.php'><img width='96' height='64' border='0' src='res/t33.png' /></a>";
?>

</div>
</body>
</html>